package com.delio.client.produccion.tipos;

import java.util.List;

import com.delio.client.produccion.articulos.NewArticuloForm;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class Tipos{ 

private static TipoServiceAsync ts = GWT.create(TipoService.class);
public static ListStore<ModelData> store,storeCombo;
public static ListLoader<ListLoadResult<BeanModel>> loader,loaderCombo;
public static Integer tipo_id; 
public static NewArticuloForm tipart_naf;


public static void listartipos(){
	  RpcProxy<List<Tipo>> proxy = new RpcProxy<List<Tipo>>(){
		protected void load(Object loadConfig, AsyncCallback<List<Tipo>> callback){
		    ts.ListarTipos(callback);
		 }
		};
	  	loader = new BaseListLoader<ListLoadResult<BeanModel>>(proxy, new BeanModelReader());  
	    store = new ListStore<ModelData>(loader);	
	    loader.load();
	}

public static void listartiposCombo(){
   RpcProxy<List<Tipo>> proxy = new RpcProxy<List<Tipo>>(){
		protected void load(Object loadConfig, AsyncCallback<List<Tipo>> callback){
		    ts.ListarTiposCombo(callback);
		 }
		};
	  	loaderCombo = new BaseListLoader<ListLoadResult<BeanModel>>(proxy, new BeanModelReader());  
	    storeCombo = new ListStore<ModelData>(loaderCombo);	
	    loaderCombo.load();
}


public static void guardar(final Tipo t){
 ts.guardar(t, new AsyncCallback<Boolean>(){

	@Override
	public void onFailure(Throwable caught) {
		MessageBox.alert("Error", "No pudo guardar", null);			
	}

	@Override
	public void onSuccess(Boolean result) {
	    if(result){
	      tipart_naf.status.hide();
        }else{
     	 MessageBox.alert("Error", "No se guardo correctamente", null);
        }
	}
 });
}

public static void actualizar(Tipo t){
 ts.actualizar(t, new AsyncCallback<Boolean>(){

   @Override
   public void onFailure(Throwable caught) {
	   MessageBox.alert("Error", "Error en la acutalizacion", null);	 
   }	
	 
   public void onSuccess(Boolean result){
	 if(result){
	   MessageBox.alert("Actualizado","Se actualizo Correctamente", null);
	 }else{
	   MessageBox.alert("Error", "No se actualizo Correctamente", null);	 
	 }
	}

 });
}

public static void eliminar(Integer id){
 ts.eliminar(id, new AsyncCallback<Boolean>(){
	
	 @Override
	 public void onFailure(Throwable caught){
		 MessageBox.alert("Error", "Error en la Eliminacion", null);
	 }
	 
	 public void onSuccess(Boolean result){
		 if(result){
		   MessageBox.alert("Eliminado","Se elimino Correctamente", null); 
		 }else{
		   MessageBox.alert("Error", "No se elimino Correctamente", null);	 
		 } 
	 }

 });
}
}
